﻿package frEngine.loaders.particleSub.particleInstance
{
    import flash.geom.*;

    public class SphereData extends MeshBase
    {
        private var _vertexCount:int;
        private var _radius:Number;
        private var _segments:int;

        public function SphereData(param1:Number = 5, param2:int = 24)
        {
            super(0, 8, true, false);
            this.createSphere(param1, param2);
            this.numVertex = this.vertexVector.length / this.sizePerVertex;
            return;
        }// end function

        public function createSphere(param1:Number = 5, param2:int = 24) : void
        {
            var _loc_3:int = 0;
            var _loc_4:Number = NaN;
            var _loc_5:Number = NaN;
            var _loc_6:Number = NaN;
            var _loc_7:Number = NaN;
            var _loc_8:Number = NaN;
            this._segments = param2;
            this._radius = param1;
            indexVector = new Vector.<uint>;
            vertexVector = new Vector.<Number>;
            var _loc_9:* = new Vector3D();
            var _loc_10:* = param2;
            var _loc_11:* = param2 + 1;
            _loc_3 = 0;
            _loc_5 = 0;
            while (_loc_5 <= _loc_11)
            {
                
                _loc_4 = 0;
                while (_loc_4 <= _loc_10)
                {
                    
                    _loc_7 = (-Math.cos(_loc_5 / _loc_11 * Math.PI)) * param1;
                    _loc_6 = Math.cos(_loc_4 / _loc_10 * Math.PI * 2) * param1 * Math.sin(_loc_5 / _loc_11 * Math.PI);
                    _loc_8 = (-Math.sin(_loc_4 / _loc_10 * Math.PI * 2)) * param1 * Math.sin(_loc_5 / _loc_11 * Math.PI);
                    _loc_9.x = _loc_6;
                    _loc_9.y = _loc_7;
                    _loc_9.z = _loc_8;
                    _loc_9.normalize();
                    vertexVector.push(_loc_6, _loc_7, _loc_8, 1 - _loc_4 / param2, 1 - _loc_5 / param2, _loc_9.x, _loc_9.y, _loc_9.z);
                    _loc_3++;
                    _loc_4 = _loc_4 + 1;
                }
                _loc_5 = _loc_5 + 1;
            }
            _loc_3 = 0;
            _loc_5 = 0;
            while (_loc_5 < _loc_11)
            {
                
                _loc_4 = 0;
                while (_loc_4 < _loc_10)
                {
                    
                    var _loc_12:* = _loc_3 + 1;
                    indexVector[_loc_12] = _loc_4 + _loc_5 * (_loc_10 + 1);
                    var _loc_13:* = _loc_3 + 1;
                    indexVector[_loc_13] = (_loc_4 + 1) + _loc_5 * (_loc_10 + 1);
                    var _loc_14:* = _loc_3 + 1;
                    indexVector[_loc_14] = _loc_4 + (_loc_5 + 1) * (_loc_10 + 1);
                    var _loc_15:* = _loc_3 + 1;
                    indexVector[_loc_15] = (_loc_4 + 1) + _loc_5 * (_loc_10 + 1);
                    var _loc_16:* = _loc_3 + 1;
                    indexVector[_loc_16] = (_loc_4 + 1) + (_loc_5 + 1) * (_loc_10 + 1);
                    var _loc_17:* = _loc_3 + 1;
                    indexVector[_loc_17] = _loc_4 + (_loc_5 + 1) * (_loc_10 + 1);
                    _loc_4 = _loc_4 + 1;
                }
                _loc_5 = _loc_5 + 1;
            }
            this._vertexCount = (_loc_10 + 1) * (_loc_11 + 1);
            return;
        }// end function

        public function get radius() : Number
        {
            return this._radius;
        }// end function

        public function get segments() : int
        {
            return this._segments;
        }// end function

    }
}
